/* uDig - User Friendly Desktop Internet GIS client
 * http://udig.refractions.net
 * (C) 2004-2008, Refractions Research Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 */
package symbology;
import java.util.*;

import feature.Feature;


/**
 * A Symbolizer tells which symbols should be used to draw a feature.
 * <p>
 * Symbolizers can be simple, where the same same symbol is used all the time,
 * or they can they can choose different symbols based on the feature's attributes
 * or the scale of the map. Symbolizers can be grouped together,
 *  creating a tree-like hierarchy of decisions and combining. While each symbolizer may
 *  be simple on its own, the resulting decision tree can create a complex symbology.
 * </p>
 * @author John Morris
 * @since 1.1.0
 */
public interface Symbolizer {
    /**
     * addSymbols determines which additional symbols should represent a feature, and adds them to the list
     * @param feature - the feature which is being symbolized
     * @param scale - the current map scale
     * @param symbols - the accumulating list of symbols
     */
    public void addSymbols(Feature feature, double scale, Symbols symbols);
}
